1 RStudio


Rstudio est l’Environnement de Développement Intégré très majoritairement employé par les utilisateurs du langage R.

1.1 Les composantes principales de l’interface

Dans son layout par défaut, lorsqu’un script est ouvert, 4 containers permettent de monitorer les différents aspects d’un projet ou d’analyses.

Leur positionnement et leur présence peuvent être paramétrés dans les options avancées.

Dans chaque container, différents onglets permettent d’accéder aux fonctionnalités proposées.


Rédaction de scripts

  • Edition de scripts dans différents onglets, visualisation de leur structure

  • Possibilité d’ouverture de scripts dans différentes fenêtres

  • Compilation de scripts, génération de rapports, options personalisées suivant la nature du document


Console

  • Console R : exécution et affichage de la sortie des commandes

  • Terminal du système (monitorat de l’utilisation mémoire, git en ligne de commande, etc)

  • Mode bebug (breakpoints, navigation dans les appels de fonction)

  • Logs des compilations de Rmarkdown


Environnement

  • Liste des variables de l’environnement : aperçu des dataframes, listes, vecteurs…

  • Sauvegarde de l’environnement de travail

  • Connexion à une base de données

  • Historique des commandes exécutées

  • Interface pour git


Fichiers et apperçus graphiques

  • Navigateur de fichiers, setting du répertoire de travail

  • Affichage des graphiques générés par le code et de leur historique

  • Liste des packages installés et loadés dans la session courante

  • Documentation des packages installés

  • Aperçu de documents html


1.2 Tips et remarques complémentaires sur RStudio et R

  • Beaucoup de paramètres sont accessibles à l’utilisateur dans les options globales de RStudio pour l’édition du code, l’apparence de l’interface, le lien avec le terminal ou git, la compilation de Rmarkdown…

  • Des raccourcis claviers existent pour la majorité des actions, la liste étant disposnible avec Alt+Shift+K ou Option+Shift+K. Des raccourcis personalisés peuvent être créés.

  • Travaillez sous le format “Projet” pour la gestion automatique des répertoires de travail, des environnements, etc

  • RStudio peut être agrémenté d’Addins, des extensions constituant des aides pour des tâches de programmation. Par exemple : un color picker, une interface pour ggplot2, une aide à la citation de références, des code organizers… Voici La liste des plus utilisés

  • User et abuser de l’autocomplétion lors de l’écriture de scripts (nom de fonctions, arguments de fonctions, variables…)

  • Obtenez de l’aide sur n’importe quelle fonction dans la console avec ?, par exemple ?ggplot.

  • Plusieurs sessions R indépendantes peuvent être lancées simultanément (travail en parallèle, ou dans différents projets)

  • RStudio s’intègre avec Git et le développement de packages avec des onglets spécifiques dans la composante en haut à droite

  • Une cheat-sheet très complète sur l’interface RStudio : https://raw.githubusercontent.com/rstudio/cheatsheets/master/rstudio-ide.pdf

  • La communauté des utilisateurs de R/RStudio est très active et développée : https://community.rstudio.com/ est un forum d’échange et d’aide aux développeurs. Des groupes comme RWeekly, SatRdays, effectuent des conférences régulièrement et communiquent sur les réseaux sociaux, sur les nouveautés liées à R.

2 Rédaction de rapports avec Rmarkdown


2.1 Quelques notions

Rmarkdown est une syntaxe permettant la rédaction de documents HTML, PDF, Word, de slides, parmi d’autres formats. Il est possible d’y inclure du code R et ses sorties, en les encapsulant dans un rapport en markdown structuré, accompagné de description et d’interprétations textuelles, de liens, d’images…

2.1.1 Pourquoi utliliser du Rmarkdown?

  • Ce format permet la communication de méthodes et de résultats de manière claire et commentée, particulièrement à des non spécialistes de l’informatique ou des statistiques.

  • La reproductibilité des analyses est garantie, car le code ayant généré les résultats montrés est présent, et peut être réexécuté par toute personne possédant le document.

2.1.2 Fonctionnement

L’édition de Rmarkdown se fait généralement sous RStudio, qui propose une interface de Notebook, permettant d’exécuter les chunks de code R souhaités, tout en rédigeant la partie textuelle en markdown.

Pour créer le document fini, on utilise le bouton Knit. Le logiciel knitr est alors utilisé pour créer un document markdown contenant le code et ses sorties, avec le reste du texte, puis le logiciel pandoc se charge de donner au document son format et apparence finale (html, pdf…).

Rmarkdown workflow.

2.1.3 Structure d’un document

  • Un header du format YAML (Yet Another Markup Langage) qui donne les paramètres du document (type de format (pdf, html), l’auteur, la date, le thème, des paramètres pour le code R, un fichier de bibliographie…). Il est entouré des délimiteurs — . Par exemple, l’entête YAML de ce document est :
---
title: "L'IDE RStudio et l'édition de documents Rmarkdown"
author: "Océane Cassan - oceane.cassan@cnrs.fr"
date: "08/31/2020"
output:
  html_document:
    theme: united
    number_sections: true
    highlight: breezedark
---
  • Des morceaux de code appelés chunks, dans lesquels les analyses et les calculs en R sont menés. Un chunck prend en option le langage utilisé, ainsi qu’un certain nombre de paramètres. Par example, include = FALSE ne fait pas apparaître le code ni les résultats dans le document fini. echo = FALSE montre les sorties du code mais pas le code lui même. fig.cap = "Ma figure" attribue la légende désirée à une figure générée par le chunk.

Généralement, le premier chunk contient la fonction knitr::opts_chunk$set(echo = TRUE), qui peut être utilisée pour préciser des paramètres qui seront utilisés pour tous les chunks du document.

Toutes les options de chunks sont décrites dans la documentation de Rmarkdown.

  • Des parties rédigées avec la syntaxe markdown. Il s’agit de texte brut enrichi de titres, sous titres, listes, insertion d’images, de liens, etc. Une description de cette syntaxe est également disponible dans la documentation. De plus, la syntaxe Latex peut être utilisée pour faire le rendu d’équations mathématiques.

La syntaxe de Rmarkdown dont vous allez avoir besoin par la suite est dans cette cheat sheet, vous pouvez garder ce document ouvert au cours du TP.

2.2 Partie pratique

Maintenant, à vous de générer un rapport d’analyses. L’idée est de générer un rapport identique à celui- ci pour illustrer les fonctionnalités de Rmarkdown.

Tout d’abord, nous aurons besoin de certains packages. Assurez-vous de leur installation avant de commencer. Pou cela, dans la console R, exécutez la commande suivante qui fera les installations des packages manquants uniquement :

packages <- c("ggplot2", "ggpubr", "gglm", "equatiomatic", "papeR", "knitr", "plotly")
install.packages(setdiff(packages, rownames(installed.packages())))  

Informations sur les packages

ggplot2 : visualisation de données

ggpubr : extensions à ggplot pour des graphes prêts à la publication

equatiomatic : donne la formule d’un modèle de régression en formule latex

papeR : formate des résultats de summary de modèles de régression

gglm : graphes des résidus d’un modèle de régression

knitr : outils pour la compilation de documents Rmd

plotly : makes ggplot graphs interactive

2.2.1 Initialisation de l’environnement de travail.

  • Ouvrez RStudio et créez un nouveau projet (File/New Project…/New Directory). Choisissez un emplacement et créez votre projet. A la racine du projet, créez un folder “data”, dans lequel vous devez télécharger les données que nous allons utiliser aujourd’hui.

  • Créez un nouveau document Rmarkdown qui sera votre script de TP, via le menu File/New file/R Markdown (acceptez les éventuelles mises à jour). Laissez l’option HTML par défaut. Comme vous le constatez, RStudio propose déjà un petit template d’exemple fonctionnel de Rmarkdown. Vous pouvez le sauvegarder et le compiler avec le bouton Knit en haut de panel du script. Inspectez le résultat obtenu, ainsi que le code l’ayant généré.

  • Personnalisez l’entête YAML (auteur, titre, date…).

  • Le premier chunk de setup doit être conservé. Rajoutez-y l’import des packages que nous allons utiliser. Il doit donc maintenant contenir :

knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
library(ggpubr)
library(equatiomatic)
library(papeR)
library(gglm)
library(plotly)

Nous continuerons de le modifier plus tard dans l’énoncé. Exécutez ce chunk avec la petite flèche verte en haut à droite, ou avec Ctrl+Shift+Enter.

La suite du template peut être supprimée.

Au cours des étapes suivantes, utilisez régulièrement Knit pour compiler et visualiser le rendu du document. Vous pouvez également prendre l’habitude de copier le texte des questions de l’énoncé dans les parties markdown de votre rapport pour re-contextualiser le code contenu des chunks.

2.2.2 Donner le contexte et importer les données

Créez une première section nommée “Contexte” (# Contexte) et rappelez l’objectif du document (vous familiariser avec Rmarkdown). Vous pouvez également parler des données que nous allons utiliser comme base de notre démonstration : Les données analysées sont issues d’une publication intitulée “Fluctuating, warm temperatures decrease the effect of a key floral repressor on flowering time in Arabidopsis thaliana” de 2015.

Dans ces données, plusieurs génotypes d’Arabidopsis thaliana, une plante modèle, ont été phénotypés (leurs caractéristiques morphologiques, leur réponse à l’environnement, ont été mesurés).

Dans le premier chunk de votre document ( Créez un chunck avec Ctrl + Alt + I, ou sous OS X: Cmd + Option + I), vous pouvez loader le jeu de données ainsi :

data <- read.csv("data/burghardt_et_al_2015_expt1.csv")
dim(data)
head(data)

La fonction dim donne les dimensions du dataframe, et head donne un perçu de ses premières lignes.

Exécutez un chunk avec la petite flèche verte en haut à droite, ou avec Ctrl+Shift+Enter. Après exécution, un objet data est apparu dans votre environnement RStudio. Vous pouvez l’inspecter avec la commande View(data) dans la console.

2.2.3 Affichage paged des dataframes

Pour améliorer le rendu des dataframes (comme ce que renvoie la fonction head, on va utiliser l’option d’affiche paged dans la partie YAML. Inspirez vous de cette entête :

---
title: "Visualisation et analyse de données de biologie végétale"
output:
  html_document:
    df_print: paged
---

Ajoutez l’option et re-compilez pour vérifier le résultat sur la sortie de head.

2.2.4 Visualisation

Créez une section Visualisation.

Créez ensuite une sous-section ## Simple visualisation.

Nous allons ici représenter le nombre de jours jusqu’à floraison pour les différents génotypes, durée de jours (qui peuvent être contrôlés dans des chambres artificielles), et la température de culture. Voici le code à utiliser pour réaliser le graphique, utilisant la librairie ggplot2 :

data$temperature <- factor(data$temperature)
data$day.length = factor(data$day.length)

ggplot(data, aes(x = factor(temperature), 
                 y = days.to.flower, 
                 color = genotype )) + 
  geom_jitter(color = "black")+ 
  geom_boxplot(aes(fill = genotype), alpha = 0.3, size = 1) +
  facet_grid(day.length~genotype) + 
  xlab("Temperature")

Exécutez le chunk, et compilez le document avec Knit.

2.2.5 Changement de la taille d’une image

L’image est de taille assez petite. De manière globale à tout le document, demandez des images de hauteur 8 et de largeur 12. Pour cela, ajoutez des paramètres fig.width et fig.height à knitr::opts_chunk$set(echo = TRUE) dans le premier chunk.

Recompliez le document pour vérifier que le changement de taille a bien eu lieu.

Vous pouvez aussi décrire le graphe et l’interpréter dans la partie markdown.

2.2.6 Ajout des tests statistiques sur la visualisation

On constate qu’une température plus élevée aura tendance à diminuer le temps nécessaire à la floraison. Il s’agit ici de reproduire le même graphe mais en se demandant si les durées jusqu’à floraison sont significativement impactées par la température. La fonction stat_compare_means du package ggpubr permet de rajouter un test de comparaison de moyennes (ici non paramétrique, le wilcox.test). Pour plus d’informations sur la fonctions, tapez ?stat_compare_means dans la console.

Créez une sous-section ## Visualisation avec tests statistiques

Ajoutez en dessous un nouveau chunk contenant :

comparisons <- list(c("12", "22"))
ggplot(data, aes(x = temperature, 
                 y = days.to.flower, 
                 color = genotype )) + 
  geom_jitter(color = "black")+ 
  geom_boxplot(aes(fill = genotype), alpha = 0.3, size = 1) +
  facet_grid(day.length~genotype) + 
  xlab("Temperature") + 
  stat_compare_means(comparisons = comparisons, label = "p.signif")

2.2.7 Utiliser des onglets pour organiser les sous-sections

Nous allons maintenant faire comme dans ce sujet de TP et positionner chacune des sous-sections dans deux onglets. Pour cela, il suffit de spécifier des options à la section supérieure # Visualisation, qui devient # Visualisation {.tabset .tabset-fade}

Compilez et inspectez le résultat.

2.2.8 Régression

On va expliquer le nombre de feuilles d’une plante au moyen du temps qu’elle a mis a fleurir, et de la longueur des jours lors de la culture. Dans une nouvelle section, expliquez l’objectif et affichez la relation entre le nombre de feuilles et le temps jusqu’à floraison. On distingue les observations réalisées en jours courts ou en jours longs par la couleur:

ggplotly(ggplot(data, aes(x = days.to.flower, 
                 y = rosette.leaf.num, 
                 color = day.length)) + geom_point())

Vous remarquez ici que la fonction ggplotly permet de rendre interactif le graphe ggplot.

On réalise la régression au moyen de la fonction lm, puis on extrait et on affiche en syntaxe latex l’équation de ce modèle linéaire :

lm <- lm(data = data, rosette.leaf.num~days.to.flower*day.length)
extract_eq(lm)

Compilez pour admirer le rendu de l’équation.

Vérifiez si le modèle linéaire semble correct et interprétable au moyen des graphes sur les résidus (fonction gglm), puis affichez les résultats du modèle dans une table interactive (fonction prettify) :

gglm(lm)
prettify(summary(lm))

Concluez sur les résultats du summary quant à l’effet du temps jusqu’à floraison et de la longueur du jour sur le nombre de feuilles (n’oubliez pas la signification du terme d’interaction). Que nous apprend cette régression?

2.2.9 Supression des messages et warnings

Les données manquantes pour certaines observations et certaines fonctions génèrent des warnings lors de l’exécution du code. Pour qu’ils n’apparaissent pas dans le document final, ajoutez un paramètre global dans le premier chunk spécifiant de ne pas rapporter les warnings ni les messages.

Attention, ne faire ça qu’en fin d’édition, et lorsque l’on est sûr que ces messages et warnings ne sont pas problématiques, ni des informations importantes.

2.2.10 Personnaliser l’apparence du document

Changez le theme du document dans l’entête YAML. Vous avez le choix entre les thèmes cerulean, cosmo, flatly, journal, lumen, paper, readable, sandstone, simplex, spacelab, united, et yeti, dont un aperçu est disponible ici. Le thème de la coloration syntaxique du code R dans les chunks peut également être changé avec l’option highlight.

2.2.11 Section de bibliographie

Ajoutez une référence bibliographique pour référencer la publication relative aux données analysées. Vous pouvez procéder comme suit :

---
title: "Visualisation et analyse de données de biologie végétale"
output:
  html_document:
    theme: united
bibliography: ./data/biblio.bib
---
  • Citez cette référence dans votre section contexte comme suit: [@Burghardt2015].

  • Ajoutez une dernière section # Références vide à la fin du document, car les références sont automatiquement ajoutées en fin de document. Recompilez et pour vérifier que la référence apparaît bien en fin de document, et qu’elle est bien référencée à l’endroit du contexte ou vous la citez.

Plus de détails sur les sont disponibles ici.

 

A work by Océane Cassan

PhD student in biostatistcics and bioinformatics